//package com.vf.admin.utils.ffmpeg;
//
//import java.awt.Dimension;
//import java.awt.Graphics2D;
//import java.awt.Rectangle;
//import java.awt.image.BufferedImage;
//import java.io.File;
//
//import javax.imageio.ImageIO;
//
//import org.bytedeco.javacv.FFmpegFrameGrabber;
//import org.bytedeco.javacv.Frame;
//import org.bytedeco.javacv.FrameGrabber;
//import org.bytedeco.javacv.Java2DFrameConverter;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//public class FrameGrabberKit {
//
//    private static final Logger logger = LoggerFactory.getLogger(FrameGrabberKit.class);
//
//
//    public static void main(String[] args) {
//        //getImage("D:\\ziyuan\\statics\\renwu\\20210612","1591952592700_97479.mp4",1);
//        File file = new File("C:\\Users\\Administrator\\Desktop\\上门\\黯然销魂.mp3");
//        long a = getMusic(file);
//        System.out.println(a);
//    }
//
//
//    /**
//     * 获取音频时长
//     */
//    public static long  getMusic(File music){
//        long duration = 0L;
//        FFmpegFrameGrabber ff = new FFmpegFrameGrabber(music);
//        try {
//            ff.start();
//            duration = ff.getLengthInTime() / (1000 * 1000);
//            ff.stop();
//        } catch (FrameGrabber.Exception e) {
//            e.printStackTrace();
//        }
//        return duration;
//    }
//
//    /**
//     * 获取视频第一帧图片
//     */
//    public static void getImage(String filePath, String fileName, int second) {
//        File folder = new File(filePath);
//        if (!folder.exists())
//        {
//            folder.mkdirs();//如果文件夹不存在则创建
//        }
//        try{
//            FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(filePath + File.separator + fileName);
//            grabber.start();
//            int ftp = grabber.getLengthInFrames();
//            int flag=0;
//            Frame frame = null;
//            while (flag <= ftp) {
//                //获取帧
//                frame = grabber.grabImage();
//                //过滤前 second 帧，避免出现全黑图片
//                if ((flag>second)&&(frame != null)) {
//                    break;
//                }
//                flag++;
//            }
//            String rotate = grabber.getVideoMetadata("rotate");
//            //创建BufferedImage对象
//            Java2DFrameConverter converter = new Java2DFrameConverter();
//            BufferedImage bufferedImage = converter.getBufferedImage(frame);
//            if (rotate != null) {
//                //旋转图片
//                bufferedImage = rotate(bufferedImage, Integer.parseInt(rotate));
//            }
//            String newFileName = filePath + File.separator + fileName.substring(0, fileName.lastIndexOf("."))+".jpeg";
//            ImageIO.write(bufferedImage, "jpeg", new File(newFileName));
//            grabber.close();
//            grabber.stop();
//        }catch(Exception e){
//            logger.error("获取视频图片失败！", e);
//        }
//
//    }
//
//    private static BufferedImage rotate(BufferedImage src, int angel) {
//        int src_width = src.getWidth(null);
//        int src_height = src.getHeight(null);
//        int type = src.getColorModel().getTransparency();
//        Rectangle rect_des = calcRotatedSize(new Rectangle(new Dimension(src_width, src_height)), angel);
//        BufferedImage bi = new BufferedImage(rect_des.width, rect_des.height, type);
//        Graphics2D g2 = bi.createGraphics();
//        g2.translate((rect_des.width - src_width) / 2, (rect_des.height - src_height) / 2);
//        g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2);
//        g2.drawImage(src, 0, 0, null);
//        g2.dispose();
//        return bi;
//    }
//    private static Rectangle calcRotatedSize(Rectangle src, int angel) {
//        if (angel >= 90) {
//            if(angel / 90 % 2 == 1) {
//                int temp = src.height;
//                src.height = src.width;
//                src.width = temp;
//            }
//            angel = angel % 90;
//        }
//        double r = Math.sqrt(src.height * src.height + src.width * src.width) / 2;
//        double len = 2 * Math.sin(Math.toRadians(angel) / 2) * r;
//        double angel_alpha = (Math.PI - Math.toRadians(angel)) / 2;
//        double angel_dalta_width = Math.atan((double) src.height / src.width);
//        double angel_dalta_height = Math.atan((double) src.width / src.height);
//        int len_dalta_width = (int) (len * Math.cos(Math.PI - angel_alpha - angel_dalta_width));
//        int len_dalta_height = (int) (len * Math.cos(Math.PI - angel_alpha - angel_dalta_height));
//        int des_width = src.width + len_dalta_width * 2;
//        int des_height = src.height + len_dalta_height * 2;
//        return new Rectangle(new Dimension(des_width, des_height));
//    }
//
//
//}
